home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ For TASM / USRGUIDE.PAK / EXEPROG.ASM < prev    next >
Assembly Source File  |  1996-02-21  |  2KB  |  57 lines

  1. ; Turbo Assembler example. Copyright (c) 1993 By Borland International, Inc.
  2.  
  3. ; EXEPROG.ASM - Template for writing .EXE files.
  4.  
  5. ; From the Turbo Assembler User's Guide, Ch. 18
  6.  
  7. P8086         ;select the processor
  8. MODEL SMALL   ;select the model - can be any model
  9. DOSHEAP = 0   ;specify whether DOS heap is to be used, or
  10.               ; internal heap; 1 indicates DOS heap; 0 internal
  11. STACK 200h    ;reserve stack space as needed for application
  12.  
  13. DATASEG
  14.    ;<<Any initialized data is defined here>>
  15.  
  16. UDATASEG
  17.    ;<<Any uninitialized data is defined here>>
  18.  
  19. CODESEG
  20.    ;This marks the start of executable code
  21.    STARTUPCODE
  22.    ;EXE program has all available memory allocated to it
  23.  
  24. IF DOSHEAP
  25.    ;Release all memory except the amount currently being used
  26.    ;End of stack is end of non-heap portion of program
  27.    MOV BX,SP
  28.    ADD BX,15    ;convert SP into paragraphs
  29.    SHR BX,4
  30.    MOV AX,SS    ;calculate size of program using ES PSP address
  31.    ADD BX,AX
  32.    MOV AX,ES
  33.    SUB BX,AX
  34.    MOV AH,4AH   ;resize memory block with PSP
  35.    INT 21H      ;address in ES
  36. ENDIF
  37.  
  38. ;Now execute user code.
  39. ;The code can be placed here, but it looks better to call it;
  40. ;DoIt returns an exit value in AL, which corresponds to ERRORLEVEL in
  41. ;.BAT files.
  42. CALL DoIt
  43.  
  44.    ;Exit to DOS when complete
  45.    MOV AH,4CH
  46.    INT 21H
  47.    RET
  48.  
  49. ;Arguments to this procedure:
  50. ;ES=PSP address (for command-line arguments)
  51. ;Must return an exit value in AL
  52. DoIt PROC NEAR
  53.    ;<<Your code goes here>>
  54.    RET
  55. DoIt ENDP
  56. END
  57.